﻿using Aludra.Core.Models;

namespace Aludra.Core
{
    public static class SpellSpeed
    {
        public static int GetTrapCardSpellSpeed(SpellTrapType trapType)
        {
            switch (trapType)
            {
                case SpellTrapType.CounterTrap: return 3;
                case SpellTrapType.Unspecified: return -1; // Invaild type
                default: return 2;
            }
        }

        public static int GetSpellCardSpellSpeed(SpellTrapType spellType)
        {
            switch (spellType)
            {
                case SpellTrapType.QuickPlaySpell: return 2;
                case SpellTrapType.Unspecified: return -1; // Invaild type
                default: return 1;
            }
        }

        public static int GetMonsterCardSpellSpeed(MonsterEffectType monsterEffectType)
        {
            switch (monsterEffectType)
            {
                case MonsterEffectType.QuickEffect: return 2;
                case MonsterEffectType.None: return -1; // Invaild type
                default: return 1;
            }
        }

        public static int GetSpellSpeed(ICard card)
        {
            if (card == null) return -1;
            switch (card.Type)
            {
                case CardType.Monster: return GetMonsterCardSpellSpeed(((MonsterCard)card).MonsterEffectType);
                case CardType.Spell: return GetSpellCardSpellSpeed(((SpellTrapCard)card).SpellTrapType);
                case CardType.Trap: return GetTrapCardSpellSpeed(((SpellTrapCard)card).SpellTrapType);
                default: return -1;
            }
        }
    }
}
